Network conduit for providing access to data services

ABSTRACT

A web service conduit ( 3 ) receives data access requests from browsers ( 11 ) from hyperlinks on pages generated by web sites ( 4 ), converts the data access requests to web service access requests, and invokes the corresponding web services ( 40 ) with the web service access requests.

FIELD OF THE INVENTION

The present invention relates to a system for providing access tonetwork data services. The present invention has particular but notexclusive applications to a method of facilitating access to webservices by web sites.

BACKGROUND OF THE INVENTION

Web services are a class of computer program that runs on a servercomputer connected to the Internet. Instead of using protocols such asHTTP and FTP to communicate with a user, web services are invoked byother programs which may be running on clients or other serversconnected to the Internet. Web services may use an XML-based protocolsuch as SOAP, with a transport protocol such as HTTP.

In a conventional architecture shown in FIG. 1, a client browser 11accesses web pages over the Internet 14 on a web site 4, which invokesone or more web services 40 over the Internet 14 as part of the pagegeneration process. Taking for example a web-based timetable lookupservice, the user of the client browser 11 downloads a form page fromthe server 4 and fills in the lookup details of a timetable request.When the form is submitted, the client browser 11 sends a page requestincluding the lookup details to the web site 4 using HTTP. The web site4 invokes an underlying timetable lookup web service 40 using HTTP toget the data requested by the user, and formats the XML result into aform to be returned in a web page to the browser 11.

This architecture gives great flexibility, and allows the functionalityof complex web sites to be distributed as underlying web services acrossgeographic and commercial boundaries. However, there are certaintechnical requirements for the web site 4 to be able to invoke webservices 40: it must be able to make outgoing HTTP requests and tohandle XML, SOAP and other protocols. These requirements can be asignificant barrier to the use of web services. Furthermore, there is agreat deal of freedom of data formats and protocols within web servicestandards such as HTTP, SOAP and XML, which makes the migration from oneweb service to another very difficult for a web site operator.

STATEMENT OF THE INVENTION

According to one aspect of the present invention, there is provided aweb service conduit which receives data access requests from browsers onpages generated by web sites, converts the data access requests to webservice access requests, and invokes the corresponding web services withthe web service access requests.

The web service access requests may be requests to read and/or writedata. In the case of a read data request, the web service conduitreceives data read from the web service, converts it into a browserformat and sends it to the browser.

An advantage of the invention is that web site authors can implement webservices using a standard format required by the web service conduit,without the technical requirements of the different underlying webservices. For example, there will be no need to enable outgoing HTTP atthe web site, or to use XML or SOAP.

BRIEF DESCRIPTION OF THE DRAWINGS

Specific embodiments of the present invention will now be described withreference to the accompanying drawings, in which:

FIG. 1 is a diagram of a conventional web service architecture;

FIG. 2 is a diagram of a web service architecture in a generalembodiment of the present invention;

FIG. 3 is a diagram of the steps in a read operation in an embodiment ofthe present invention;

FIG. 4 shows a web form as displayed on a browser for initiating theread operation;

FIG. 5 shows a log-in form as displayed by the browser during the readoperation;

FIG. 6 shows a trusted web service check form as displayed by thebrowser during the read operation;

FIG. 7 is a diagram of the steps in a write operation in an embodimentof the present invention; and

FIG. 8 shows a web page displaying details of an event and a hyperlinkto add the event to a web-based calendar.

MODES FOR CARRYING OUT THE INVENTION GENERAL EMBODIMENT

A general embodiment of the present invention is shown in FIG. 2. Inthis architecture, web pages on the web site 4 include links to aconduit 3 connected to the Internet 14. The links cause the conduit 3 toinvoke one or more underlying web services 40 over the Internet 14 toperform data read and/or write operations. In a read operation, theconduit 3 forwards data read from one of the web services to the browser11. In a write operation, the data written to one of the web services 40may be subsequently accessed by a read operation, or via another webserver (not shown).

As is well known, the web site 4 may be implemented by one or more webservers each comprising one or more computers connected to the Internetand running a web application on a web server platform.

The web services 40 may be implemented by one or more applicationservers which comprise one or more computers connected to the Internetand running application server software serving as an interface or‘middleware’ to one or more databases. The databases need not becollocated with the application servers but may instead be hosted atremote sites. However, the connections to the databases typically takeplace over high-bandwidth low-latency networks and not over theInternet. An example of a web service is the Microsoft .NET™ webservices.

The browser 11 may be implemented by a computer connected directly orindirectly to the Internet 14 and running browser software such asMicrosoft™ Internet Explorer™ or Netscape™ Navigator versions 3 orabove. The computer may be a desktop, laptop or palmtop computer or anyother similar device which is capable of running browser software andconnecting to the Internet. The computer may be connected to theInternet indirectly via a wireless circuit-switched or packet-switchednetwork.

The conduit 3 may be implemented by any suitable server configuration,but preferably by a secure, scalable, fault-tolerant server farm runninga custom conduit application on suitable platform, such as Linux.

The present invention is not limited to these specific configurationsand may be implemented using other types of computer, device and/ornetwork.

Read Operation

An example of a read operation in a first specific embodiment of thepresent invention will now be described with reference to FIGS. 3 to 6.In this example, a form is populated with data retrieved from a userprofile web service.

At step S1, the user of the browser 11 requests a page from a web site4, which returns a form with blank fields. For example, as shown in FIG.4, the page includes fields for the user's name and telephone number.The page includes a ‘Retrieve’ button which contains a link to theconduit 3 including parameters for passing to the conduit 3. Theparameters include the identity of the web service 40, the identity ofthe web site 4, and the names of fields to be read from the web service40.

In this example, the user has already stored a full set of details,including name and address, on a web service 40. Rather than enter thedetails manually, the user clicks on the ‘Retrieve’ button. At step S2,the browser 11 is redirected to the conduit 3 and the parametersembedded in the link are passed to the conduit 3.

The conduit 3 must authenticate the user and ensure that the user isauthorized to access the requested web service. This may be done byverifying that the user is logged in to a user authentication servicesuch as the Microsoft™ .NET Passport. Alternatively, the conduit 3 mayuse a separate authentication system from the web services 40. If theuser is already authenticated, then the operation passes directly tostep 4 and the user may read the authentication details stored on theuser's computer, for example as an encrypted cookie.

If the user is not logged in, at step S3 the conduit 3 sends a page 41to the browser 11 requesting the user to log in to the conduit 3 andoptionally the relevant web service 40, if this is required. An exampleof this page is shown in FIG. 5. If it is the first visit of the user tothe conduit 3 the user may be prompted for a choice of authenticationmechanism for the desired category of the read/write web service access.For example, if the user selects .NET Passport to retrieve theirprofile, then the elected web service will be .NET Profile. This settingmay be changed subsequently by the user. Preferably, the conduit 3generates a separate pop-up window at the browser 11 for communicationwith the user, so as not to remove the page of the web site 4 fromdisplay.

At step S4, the conduit 3 checks the identity of the indicated webservice 40 against a list 42 of web services to which the user hasgranted the conduit 3 permission to access. If the indicated web serviceis not on this list, the conduit 3 sends a page to the browser 11prompting the user to add the indicated web service 40 to the user'slist 42, as shown for example in FIG. 6. If the user agrees to add theindicated web service to the list 42 then the process continues.Otherwise, the process terminates and the conduit 3 sends a page to thebrowser 11, preferably in a pop-up window, indicating that the webservice 40 cannot be used. At step S5, the conduit 3 sends a readrequest to the web service 40 using the parameters supplied in the linkby the browser 11. The read request is formatted by the conduit 3according to the protocols required by the web service. The conduit 3receives the requested data from the web service 40.

At step S6, the conduit 3 formats the received data and forwards it tothe browser 11. At step S7, the browser 11 is redirected to the web site4 with the received data encoded within the query string and the usersubmits the completed form to the web site 4.

As an alternative to step S6, the conduit 3 may send the received datato the browser 11 as a form POST with the received data encoded in theHTTP request body.

Web Site Implementation

To implement a read operation link, three HTML fragments must beincorporated in the web site 4: a JavaScript HTML tag, an Onload eventin the HTML body tag, and the hyperlink to the conduit 3.

In one example, the JavaScript HTML tag is: <SCRIPTLANGUAGE=“javascript”SRC=http://conduitserver.com/scripts/conduit_read.js></SCRIPT>

The file requested by this HTML tag contains a single generic function,for example WriteFormValues, to manage the form data requirements andany state data including any application-specific query string or hiddenfield data present on the web site 4.

The JavaScript function first checks to see if there is a query stringargument. If so, and none of the names within the query stringname-value pairs correlate to form field names on the web page, then thequery string text is appended to the end of the hyperlink to the conduit3. Similarly, any hidden field data in the page is copied into thehyperlink to the conduit 3.

When returning to the page, the JavaScript function initially associatesform fields (either text box or application-defined hidden fields) withname-value pairs within the query string. Any query string informationneeded for proprietary purposes of the web site 4 is left unimpaired bythe conduit 3 so as not to interfere with any web site server scriptwhich runs as a prelude to the delivery of the page. A sample script forWriteFormValues is given in Annex 1 below. This script is compatiblewith JavaScript DOM implementation in third-generation browsers (e.g.Microsoft™ Internet Explorer™ 3.00 and above or Netscape™ Navigator™3.00 and above).

To copy the values from the page parameters to the associated fields,the function WriteFormValues is invoked using the OnLoad event in theHTML BODY tag, for example:

-   -   OnLoad=“WriteFormValues( )”

Finally, a hyperlink to the conduit 3 is included in the form page toallow the user to invoke the web service 40 via the conduit 3. Thehyperlink may be associated with an icon allowing the user to identify alink to the conduit 3. For example, the hyperlink may be coded as:  <AHREF = “http://conduitserver.com/conduitrequest.aspx ?name=con_profile_name&telno=con_profile_telno&con_pid=1234 > <IMG   SRC=http://conduitserver.com/images/request.gif BORDER=“0”></A>

The URL contains a list of parameters used by the conduit 3, where Nameand Telno refer to the form text boxes with fieldnames Name and Telnorespectively. PID is a partner identifier which identifies the web site4 to the conduit 3. The parameter names are preferably those recognisedby the web service 40, prefixed with ‘con_’ to represent the encodedversion for the conduit 3.

In some cases, additional parameters may need to be sent to the conduit3 for supply to the web service 40. For example, the web service mayrequire an email address of the user. This information is extracted bythe JavaScript from either hidden field information or from a textbox onthe form page, and the name-pair field is sent to the conduit 3. Theconduit 3 recognises this field because of the ‘con_’ prefix before theactual parameter name recognised by the web service 40.

Write Operation

An example of a write operation in a second embodiment of the presentinvention will now be described with reference to FIGS. 7 and 8. Thisembodiment uses the same general architecture as shown in FIG. 2. Inthis example, the user adds the details of an event to a web calendarservice.

At step S10, the user of the browser 11 requests a page from a web site4, which displays details of an event with a hyperlink to add that eventto the user's calendar. For example, as shown in FIG. 8, details of aconcert are displayed with an ‘Add’ button alongside.

At step S11, the user clicks on the ‘Add’ button and the browser isredirected to the conduit 3 by the underlying hyperlink. The hyperlinkcomprises the URL of the conduit 3 together with parameters whichinclude the identity of the web service 40, the identity of the web site4, and the names and values of the fields to be written to the webservice 40. These parameters are passed to the conduit 3.

If the user is not already authenticated, at step S12 the conduit 3prompts the user to log in, as in the read operation.

At step S13, the conduit 3 checks the identity of the indicated webservice 40 against a list 42 of web services to which the user hasgranted the conduit 3 permission to access. If the indicated web serviceis not on this list, the conduit 3 sends a page to the browser 11prompting the user to add the indicated web service 40 to the user'slist 42. If the user agrees to add the indicated web service to the list42 then the process continues. Otherwise, the process terminates and theconduit 3 sends a page to the browser 11 indicating that the web service40 cannot be used.

At step S14, the conduit 3 send parameter values derived from theparameter values in the hyperlink to the web service 40, and the webservice responds by confirming that the values have been added to theuser's calendar. At step S15, the conduit 3 displays a page, such as apop-up window, confirming that the details of the event have been addedto the user's calendar.

Web Site Implementation

To implement a write operation link, only a correctly formattedhyperlink is required in the displayed page at the web site 4. Forexample:  <A HREF=“http://conduitserver.com/ ?con_pid=1234&con_eid=5678&con_day=08&con_month=04&con_(—)year=2001&con_starttime=20.00&con_subject=beethoven@royal_(—)albert_hall>  <IMG SRC=http://conduitserver.com/images/add.gif BORDER=“0”></A>

The hyperlink contains the names and values of parameters recognised bythe web service, with the names prefixed by ‘con_’ so that the conduit 3can identify parameters which it must forward to the web service 40.

Alternatively, an address-based hyperlink may be used, such as:

-   -   http://conduitserver.com/pid=1234/eid=5678/08/04/2001/20.00/beeth        oven@royal_albert_hall>        Conduit Implementation for Read/Write Operation

The following description applies to both read and write operations andhence to both the first and second embodiments.

The conduit 3 has access to a web service database identifying theformat and protocol requirements of available web services 40, as wellas their service types and field definitions. The conduit 3 is thereforeable to translate a generic access request from the browser 11 to anaccess request to a specific web service 40.

The conduit 3 also has access to a user database identifying, for eachregistered user, the web services 40 to which the user has grantedpermission to access, together with user logon details such as UserIDand password.

In each web service access request, the conduit 3 receives theparameters from the browser 11 and identifies those with the “con_”prefix as requiring processing. The conduit 3 identifies the requestedweb service type from the service type prefix of the parameters; forexample, “profile_” indicates a user profile server type. Thoseparameters without a service type prefix, such as PID, are for internalprocessing by the conduit 3 and are not passed to a web service.

The conduit 3 then identifies a specific web service 40 by searching thespecified user record of the user database for a permitted web serviceof the specified web service type. The conduit reads the requirements ofthe specific web service 40 from the web service database, and formatsand sends the parameters relevant to that web service 40 according tothose requirements.

The present invention is not limited to the general or specificembodiments described above. It is envisaged that various modificationsand variations could be made without falling outside the scope of thepresent invention.

Annex 1—Sample JavaScript Function function WriteFormValues( ) {  varqueryString = document.location.href;  var twoQueryString =queryString.split(“?”);  if(twoQueryString.length<=1) return;  vareachFormElement = twoQueryString[1].split(“&”);  var m_NameValue = newArray( );  //Search through hidden fields here  //On the return trip thehidden fields will be pulled back out and  //reloaded into form elementvalues  for(int a = 0; a < details.elements.length; i++) {  if(details.elements[i].type==“hidden”) {   m_NameValue[details.elements[i].name] = details.elements[i].   value;   }  }  //Do form handling here  var details =document.forms[0];  var selected = false;  for(i = 0; i <details.elements.length; i++) {   if(details.elements[i].type==“text” ∥details.elements[i].type==   “hidden”) {    for(var j = 0; j <eachFormElement.length; j++) {     var tempString =eachFormElement[j].split(“=”);     if(tempString[0] ==details.elements[i].name) {     details.elements[i].value=tempString[1];      selected = true;     break;     }    }   //Do the capturing of querystring informationhere - if the name from   the   //name-value pair doesn't correspond toa form element then the values will be    //appended to the linkquerystring    if(selected==false) {     m_NameValue[tempString[0]] =tempString[1];    }    selected = false;   }  }  //Add to conduit link var addQuery = “&”;  for(key in m_Name) {   addQuery += (key + “=” +m_NameValue[key] + “&”);  }  document.all[“Link”].href +=addQuery.substring(0, addQuery.length −  1);  return true; }Annex 2—Glossary

-   DOM: Document Object Model which allows JavaScript to interact with    objects on an HTML page to change their behaviour.-   HTTP: HyperText Transport Protocol. The standard World Wide Web    client-server protocol user for the exchange of information (such as    HTML documents, and client requests for such documents) between a    browser and a web server.-   HTML: HyperText Markup Language. A standard coding convention and    set of codes for attaching presentation and linking attributes to    informational content within web pages. During a web page authoring    stage, the HTML codes are embedded within the informational content    of the web page. When the web page is subsequently downloaded to a    browser, the codes are interpreted by the browser and user to parse    and display the web page. HTML codes are often used to create links    to other web pages, commonly referred to as “hyperlinks”.-   JavaScript: A platform-independent scripting language which can    interact with HTML to provide additional browser functionality.-   .NET: An operating system platform developed by Microsoft, which    allows applications to be hosted on remote servers over the    Internet.-   Passport: A standardized authentication system for NET which allows    users to be authenticated to multiple different services using a    single set of authentication details.-   SOAP: Simple Object Access Protocol. A platform-independent protocol    for sending information over the Internet. SOAP uses an XML format    with HTTP as a transport protocol,-   XML: Extensible Markup Language. A specification for designing    customized tags (HTML codes), enabling the definition, transmission,    validation and interpretation of data between applications and    between organisations.

1. A method of providing access to a remote data service (40) over anetwork (14), comprising: a. receiving (S2; S11) from a remote terminal(11) a data access request, in a first format, identifying one or moreparameters; b. converting the data access request into a second format;and c. forwarding (S5; S14) the data access request in the second formatto the remote data service so as to perform a data access using theparameters; wherein the data access request is forwarded by the terminal(11) from a network service (4) remote from the terminal (11) and fromthe data service (40).
 2. The method of claim 1, wherein the data accessrequest is a read access request, the method further comprising: d.receiving (S5) from the remote data service (40), in said second format,a data message containing parameter values corresponding to theparameters identified in said data access request; e. converting thedata message from said second format to said first format; and f.forwarding (S6) the data message in the first format to the remoteterminal (11).
 3. The method of claim 2, wherein the data access requestis a write access request and contains parameter values corresponding tothe parameters, and step c causes the parameter values to be written tothe data service (40).
 4. A method of providing access to a web service(40) over the Internet (14), comprising: a. receiving (S2; S11) from abrowser (11) a data access request, in a first format, identifying oneor more parameters; b. converting the data access request into a secondformat; and c. forwarding (S5; S14) the data access request in thesecond format to the web service (40) so as to perform a data accessusing the parameters; wherein the data access request is forwarded bythe browser (I 1) from a web site (4) remote from the web service (40).5. A method of providing access to a remote data service (40) over anetwork (14) using a link protocol, comprising sending to a remoteterminal (11) a link to a network conduit (3), the link identifying oneor more parameters and being formatted so as to cause the networkconduit (3) to perform a data access at the remote data service (40)using the parameters when forwarded to the network conduit (3) by theremote terminal (11).
 6. The method of claim 5, wherein the link isformatted to provide a data read access at the remote data service (40)such that parameter values corresponding to the parameters are read (S5)from the data service (40) by the network conduit (3) and are forwardedto the remote terminal (11).
 7. The method of claim 6, furthercomprising sending to the remote terminal (11) a link to a program tocause the program to be loaded and executed by the remote terminal (11)so as to control the handling of the data read access by the terminal(11).
 8. The method of claim 7, further including the step of receivingthe parameter values from the remote terminal (11).
 9. The method ofclaim 5, wherein the link is formatted to provide a data write access atthe remote data service (40) and includes parameter values correspondingto the parameters, such that the parameter values are written to thedata service (40) by the network conduit (3).
 10. A method of providingaccess to a web service (40) over the Internet (14), comprising sendingto a browser (11) an HTML link to a conduit (3), the link identifyingone or more parameters and being formatted so as to cause the networkconduit (3) to perform a data access at the web service (40) using theparameters when forwarded to the conduit (3) by the browser (11).
 11. Amethod of performing a data access operation at a remote data service(40) over a network (14) from a terminal (11) using a link protocol,including: a. receiving (S1; S10) at the terminal (11) from a networkservice (4) a link directed to a network conduit (3) and identifying oneor more parameters; and b. in response to user activation of the link,connecting (S2) the terminal (11) to the network conduit (3) over thenetwork (14) and identifying the parameters to the network conduit (3),such that the parameters are forwarded by the network conduit (3) to theremote data service (40) so as to perform the data access operation. 12.The method of claim 11, wherein the data access operation is a readaccess operation, the method further including receiving (S6) parametervalues corresponding to the parameters from the network conduit (3). 13.The method of claim 12, further including forwarding (S7) the parametervalues to the network service (4).
 14. The method of any one of claims11 to 13, including receiving a link to a program, the link causing theprogram to be loaded and executed by the terminal (11) so as to controlthe handling of the read access operation by the terminal (11).
 15. Themethod of claim 11, wherein the data access operation is a write accessoperation, and the link includes parameter values corresponding to theidentified parameters, whereby the parameter values are written to theremote data service (40) by the network conduit (3).
 16. A method ofperforming a web service access operation over the Internet (14) from abrowser (11), including: a. receiving (S1; S10) at the browser (11) froma web site (4) a hyperlink to a conduit (3), the hyperlink identifyingone or more parameters; and b. in response to user activation of thehyperlink, connecting (S2) the browser (11) to the conduit (3) over theInternet (14) and identifying the parameters to the conduit (3), suchthat the parameters are forwarded by the conduit (3) to the web service(40) so as to perform the data access operation.
 17. A computer programfor performing the method of any preceding claim.
 18. A carrier bearinga computer program according to claim
 17. 19. A system for providingaccess to a data service (40) over a network (14) using a link protocol,comprising: a. a network service (4) which provides a link to a conduit(3) including one or more parameters; b. a terminal (11) which receivessaid link and, in response to a user selection, sends the one or moreparameters to the conduit (3); and c. said conduit (3) which receivessaid one or more parameters and sends a data access request includingsaid one or more parameters to the data service (40) over the network(14).